#ifndef MYSERIALPORT_H
#define MYSERIALPORT_H
/*
 * 串口驱动类，提供串口基础功能
 * 版本：V1.0
 * 更新日志：
 *      [V1.0]
 *          新增功能：
 *              1.创建模块
 *              2.打开、关闭串口
 *              3.获取串口状态
 *              4.通过串口发送、接收数据
*/
#include <QObject>
class QSerialPort;

class MySerialPort : public QObject
{
    Q_OBJECT
public:
    //串口对象初始化、内部处理
    explicit MySerialPort(QObject *parent = nullptr);
    //关闭串口
    ~MySerialPort();
    //打开串口
    //@param portName 串口名
    //@param baudRate 波特率，默认57600
    //@return bool 操作结果，true=成功，false=失败
    bool openSerialPort(QString portName, quint16 baudRate=57600);
    //关闭串口
    void closeSerialPort();
    //获取可用的串口列表
    //@return QStringList 串口列表
    QStringList getSerialPortList();
    //获取串口状态
    //@return bool 串口状态
    bool getSerialPortState();
    //通过串口发送数据
    //@param data 要发送的数据，建议使用Local8Bit转码方式转换以支持中文
    void sendData(const QByteArray &data);

signals:
    //通过串口接收数据
    //@param portName 串口名
    //@param data 接收到的数据
    void receiveData(QString portName, QByteArray data);

protected slots:
    void portReadyReadSlot();   //串口数据就绪槽函数

protected:
    QSerialPort *port;          //串口对象
};

#endif // MYSERIALPORT_H
